package com.evan.review.classloader;

import android.util.Log;

/**
 * 用于测试类加载和初始化过程的类
 * <p>
 * 特点：
 * 1. 包含静态代码块，用于观察类初始化时机
 * 2. 包含静态变量和实例变量，用于测试加载和初始化的区别
 */
public class TestInitClass {
    private static final String TAG = "TestInitClass";

    // 静态变量，类初始化时赋值
    public static String STATIC_FIELD = staticMethod();

    // 实例变量，实例化时赋值
    public String instanceField = "实例字段";

    // 静态代码块，类初始化时执行
    static {
        Log.d(TAG, "静态代码块执行了！这说明类被初始化了");
        Log.d(TAG, "静态变量STATIC_FIELD值: " + STATIC_FIELD);
    }

    // 构造方法，实例化时执行
    public TestInitClass() {
        Log.d(TAG, "构造方法执行了！这说明类被实例化了");
        Log.d(TAG, "实例变量instanceField值: " + instanceField);
    }

    // 静态方法，用于初始化静态变量
    private static String staticMethod() {
        Log.d(TAG, "静态方法执行了！这发生在类初始化阶段");
        return "静态字段";
    }

    // 普通方法
    public void instanceMethod() {
        Log.d(TAG, "实例方法执行了！这需要先有实例对象");
    }

} 